package com.yr.ryjk.pay.service;

import java.io.OutputStream;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.yr.ryjk.pay.entity.BankCard;
import com.yr.ryjk.pay.vo.CashOutDoctorVO;

public interface IPayService {
	/**
	 * 获取个人所有健康币
	 * @param token
	 * @return
	 */
	List<BankCard> getAllCardOfDoc(String token);

	/**
	 * 医生添加银行卡
	 * @param dId 区域id
	 * @param openBank 开户行
	 * @param cardNo 银行卡号
	 * @param token 令牌
	 * @return
	 */
	Map<String, Object> addCardToDoctor(Integer dId, String openBank, String cardNo,
			String token);

	/**
	 * 医生删除银行卡
	 * @param cardId
	 * @param token
	 */
	void deleteCard(String cardId, String token);

	/**
	 * 医生提交提现申请
	 * @param cardId
	 * @param coinAmount
	 * @param token
	 * @return
	 */
	Map<String, Object> addCashOut(String cardId, int coinAmount, String token);

	/**
	 * 医生分页获取提现申请记录
	 * @param pageNo
	 * @param pageSize
	 * @param token
	 * @return
	 */
	Map<String, Object> listCashOut(int pageNo, int pageSize, String token);

	/**
	 * app用户提交充值申请
	 * @param type
	 * @param amount
	 * @param token
	 * @return
	 * @throws ParseException
	 */
	Map<String, Object> submitOrder(int type, int amount, String token) throws ParseException;

	/**
	 * 接收到银联通知后进行相应的处理
	 * @param txnTime 订单发送时间
	 * @param txtAmt 支付金额 
	 * @param orderId 订单号
	 */
	void updateCoinInFinishByTn(Date txnTime, int txtAmt, String orderId);
	
	/**
	 * 后台提现申请记录
	 * @param pageNo
	 * @param pageSize
	 * @param type
	 * @param name 
	 * @param phone
	 * @return
	 */
	Map<String, Object> getListOfPage(int pageNo, int pageSize, int type,String name,String phone);
	
	/**
	 * 批量解决
	 * @param ids id集合,逗号分隔
	 */ 
	void updateSolveCashout(String ids);

	/**
	 * 详情
	 * @param id
	 * @return
	 */
	CashOutDoctorVO getByPrimaryKey(String id);
	
	/**
	 * 后台提现导出
	 * @param status 0待处理,1已处理
	 * @param os 
	 * @return
	 * @throws Exception 
	 */
	void exportExcel(int status, OutputStream os) throws Exception;
	/**
	 * 获取提现金额到期时间提示信息
	 * @return
	 */
	String getCashOutTip();
	/**
	 * 后台充值收支记录
	 * @param pageNo
	 * @param pageSize
	 * @param operateTime
	 * @param name
	 * @param phone
	 * @return
	 */
	Map<String, Object> getListOfCashInPage(int pageNo, int pageSize, Date inTime,String name,String phone);
	
	/**
	 * 某个用户充值记录收支详情
	 * @param id
	 * @return
	 */
	Map<String, Object> getCashInRecordByPrimaryKey(int pageNo, int pageSize,String userId);
	
	/**
	 * 后台充值导出
	 * @param status 0待处理,1已处理
	 * @param os 
	 * @return
	 * @throws Exception 
	 */
	void exportCashInExcel(String userId, OutputStream os) throws Exception;
}
